From b1b4a612b656d35d4f026f4f3d1dd6700194f18e Mon Sep 17 00:00:00 2001 From: Keir Fraser Date: Wed, 14 Jan 2009 10:56:18 +0000 Subject: [PATCH] x86: propagate disabled APIC state to Dom0 This in particular eliminates the need to specify "noapic" to Dom0 when "noapic" is passed to Xen, provided the kernel side gets slightly modified to make use of this information (Linux side patch cannot easily be provided for the 2.6.18 tree, but this is being used by our 2.6.27-based one). Signed-off-by: Jan Beulich --- xen/arch/x86/traps.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/xen/arch/x86/traps.c b/xen/arch/x86/traps.c index bdd6f59b08..cd23b9bc50 100644 --- a/xen/arch/x86/traps.c +++ b/xen/arch/x86/traps.c @@ -723,6 +723,8 @@ static void pv_cpuid(struct cpu_user_regs *regs) { /* Modify Feature Information. */ __clear_bit(X86_FEATURE_VME, &d); + if ( !cpu_has_apic ) + __clear_bit(X86_FEATURE_APIC, &d); if ( !opt_allow_hugepage ) __clear_bit(X86_FEATURE_PSE, &d); __clear_bit(X86_FEATURE_PGE, &d); @@ -755,6 +757,8 @@ static void pv_cpuid(struct cpu_user_regs *regs) __clear_bit(X86_FEATURE_XTPR % 32, &c); __clear_bit(X86_FEATURE_PDCM % 32, &c); __clear_bit(X86_FEATURE_DCA % 32, &c); + if ( !cpu_has_apic ) + __clear_bit(X86_FEATURE_X2APIC % 32, &c); __set_bit(X86_FEATURE_HYPERVISOR % 32, &c); break; case 0x80000001: @@ -773,6 +777,8 @@ static void pv_cpuid(struct cpu_user_regs *regs) __clear_bit(X86_FEATURE_RDTSCP % 32, &d); __clear_bit(X86_FEATURE_SVME % 32, &c); + if ( !cpu_has_apic ) + __clear_bit(X86_FEATURE_EXTAPICSPACE % 32, &c); __clear_bit(X86_FEATURE_OSVW % 32, &c); __clear_bit(X86_FEATURE_IBS % 32, &c); __clear_bit(X86_FEATURE_SKINIT % 32, &c); -- 2.30.2